/*
 * Copyright the original author or authors.
 * 
 * Licensed under the MOZILLA PUBLIC LICENSE, Version 1.1 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.mozilla.org/MPL/MPL-1.1.html
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package  com.bourre.transitions
{
	import com.bourre.commands.ASyncCommandListener;
	import com.bourre.transitions.TweenEvent; 	

	/**
	 * <code>TweenListener</code> defines rules for tween listeners.
	 * <p>
	 * All instances which want to listen to <code>AdvancedTween</code> progression, 
	 * must implement <code>TweenListener</code> interface.
	 * </p>
	 * 
	 * @author	Francis Bourre
	 * @author	Cédric Néhémie
	 * 
	 * @see 	TweenEvent	 * @see 	AdvancedTween
	 */
	public interface TweenListener extends ASyncCommandListener
	{
		/**
		 * Method called when tween starts.
		 * 
		 * @param	e	<code>TweenEvent</code> instance
		 */
		function onStart( e : TweenEvent ) : void;
		
		/**
		 * Method called when tween stops.
		 * 
		 * @param	e	<code>TweenEvent</code> instance
		 */
		function onStop( e : TweenEvent ) : void;
		
		/**
		 * Method called when tween ends.
		 * 
		 * @param	e	<code>TweenEvent</code> instance
		 */
		function onMotionFinished( e : TweenEvent ) : void;
		
		/**
		 * Method called when object property value is updated.
		 * 
		 * @param	e	<code>TweenEvent</code> instance
		 */
		function onMotionChanged( e : TweenEvent ) : void;
	}
}